package top.lishuoboy.javaweb.a16json_ajax.i18n;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import java.util.Locale;
import java.util.ResourceBundle;

/**
 * 4、i18n 国际化（了解内容）
 * 4.1、什么是 i18n 国际化？
 *  国际化（Internationalization）指的是同一个网站可以支持多种不同的语言，以方便不同国家，不同语种的用户访问。
 *  关于国际化我们想到的最简单的方案就是为不同的国家创建不同的网站，比如苹果公司，他的英文官网是： http://www.apple.com 而中国官网是 http://www.apple.com/cn
 *  苹果公司这种方案并不适合全部公司，而我们希望相同的一个网站，而不同人访问的时候可以根据用户所在的区域显示 不同的语言文字，而网站的布局样式等不发生改变。
 *  于是就有了我们说的国际化，国际化总的来说就是同一个网站不同国家的人来访问可以显示出不同的语言。但实际上这 种需求并不强烈，一般真的有国际化需求的公司，主流采用的依然是苹果公司的那种方案，为不同的国家创建不同的页 面。所以国际化的内容我们了解一下即可。
 *  国际化的英文 Internationalization，但是由于拼写过长，老外想了一个简单的写法叫做 I18N，代表的是 Internationalization 这个单词，以 I 开头，以 N 结尾，而中间是 18 个字母，所以简写为 I18N。以后我们说 I18N 和国际化是一个意思。
 *
 * @author lishuoboy
 * @date 2022-01-14 12:29
 */
@Slf4j
public class LocaleTest {
    @Test
    public void testLocale() {
        // 获取所有语言
//        log.info("{}", ListUtil.list(false, Locale.getAvailableLocales()));
        // 获取美国语言
        log.info("{}", Locale.US);          // en_US
        // 获取默认语言
        log.info("{}", Locale.getDefault());// zh_CN
        // 获取中国语言
        log.info("{}", Locale.CHINA);       // zh_CN
        log.info("{}", Locale.CHINA.stripExtensions());    // zh_CN
        log.info("{}", Locale.CHINA.toLanguageTag());      // zh-CN
        log.info("{}", Locale.CHINA.getDisplayName());     // 中文 (中国)
        log.info("{}", Locale.CHINA.getLanguage());        // zh
        log.info("{}", Locale.CHINA.getDisplayLanguage()); // 中文
        log.info("{}", Locale.CHINA.getISO3Language());    // zho
        log.info("{}", Locale.CHINA.getCountry());         // CN
        log.info("{}", Locale.CHINA.getDisplayCountry());  // 中国
        log.info("{}", Locale.CHINA.getISO3Country());     // CHN
//        log.info("{}", Locale.CHINA.getScript());
//        log.info("{}", Locale.CHINA.getDisplayScript());
//        log.info("{}", Locale.CHINA.getVariant());
//        log.info("{}", Locale.CHINA.getDisplayVariant());
//        log.info("{}", Locale.CHINA.getExtensionKeys());
//        log.info("{}", Locale.CHINA.getUnicodeLocaleKeys());
//        log.info("{}", Locale.CHINA.getUnicodeLocaleAttributes());

    }

    /** 4.3、国际化资源 properties 测试 */
    @Test
    public void testResourceBundle() {
        // 得到我们需要的 Locale 对象
        Locale locale = Locale.CHINA;
//        Locale locale = Locale.US;
        // 通过指定的 basename 和 Locale 对象，读取 相应的配置文件
        ResourceBundle bundle = ResourceBundle.getBundle("16json_ajax/i18n/i18n", locale);
        System.out.println("username：" + bundle.getString("username"));
        System.out.println("password：" + bundle.getString("password"));
        System.out.println("Sex：" + bundle.getString("sex"));
        System.out.println("age：" + bundle.getString("age"));
    }
}
